In many modern multiprocessor systems, it is generally assumed that peak or near peak performance will be achieved by splitting computational loads across all the nodes of the system. In systems with multiple processing units, one or more of the multiple processing units can be configured with a relatively small, non-cached local store, backed up with a larger main memory, accessed through direct memory access (DMA). A program compiled to run on the system, that is, a single-source program, can sometimes include more data than will fit at any one time into the local stores.
One approach to addressing local store capacity is to employ a software managed cache. Generally, as will be understood to one skilled in the art, a software managed cache is a computer program that can allocate certain data to be maintained in the local or system cache, to reduce lookup times associated with collecting data stored in the main memory. However, typical software managed cache solutions often incur latencies of their own, which can severely impact program performance.
Moreover, the utility of a computer system is achieved by the process of executing specially designed software, herein referred to as computer programs or codes, on the processing unit(s) of the system. These codes are typically produced by a programmer writing in a computer language and are prepared for execution on the computer system by the use of a compiler. The ease of the programming task, and the efficiency of the ultimate execution of the code on the computer system are greatly affected by the facilities offered by the compiler. Many modern simple compilers produce slowly executing code for a single processor. Other compilers have been constructed that produce relatively extremely rapidly executing code for one or more processors in a homogeneous multi-processing system. Designing code to operate in a multi-processing system with a software managed cache however, often requires a time-intensive and/or complicated analysis of the whole program before the benefits of optimizing the software managed cache outweigh the development effort and/or other timing latencies inherent in the program.
Therefore, there is a need for a system and/or method for software managed cache optimization for multi-processing systems that addresses at least some of the problems and disadvantages associated with conventional systems and methods.